﻿﻿﻿﻿﻿using jiuyuan.数据.怪物类;

namespace jiuyuan.数据.基础数据类;

//public class 属性配置
//{
//    // 基础属性
//    public int 生命值 { get; set; }
//    public int 魔法值 { get; set; }
//    public int 物理攻击 { get; set; }
//    public int 物理防御 { get; set; }
//    public int 火属性攻击 { get; set; }
//    public int 水属性攻击 { get; set; }
//    public int 风属性攻击 { get; set; }
//    public int 土属性攻击 { get; set; }
//    public int 火属性抗性 { get; set; }
//    public int 水属性抗性 { get; set; }
//    public int 风属性抗性 { get; set; }
//    public int 土属性抗性 { get; set; }
//    public int 速度 { get; set; }
//    public int 幸运值 { get; set; }
    
//    // 添加缺失的属性别名，以兼容现有代码
//    public int 生命值上限 { get => 生命值; set => 生命值 = value; }
//    public int 魔法值上限 { get => 魔法值; set => 魔法值 = value; }
//    public int 物理攻击力 { get => 物理攻击; set => 物理攻击 = value; }
//    public int 物理防御力 { get => 物理防御; set => 物理防御 = value; }
//    public int 火攻 { get => 火属性攻击; set => 火属性攻击 = value; }
//    public int 水攻 { get => 水属性攻击; set => 水属性攻击 = value; }
//    public int 风攻 { get => 风属性攻击; set => 风属性攻击 = value; }
//    public int 雷攻 { get => 土属性攻击; set => 土属性攻击 = value; }
//    public int 火抗 { get => 火属性抗性; set => 火属性抗性 = value; }
//    public int 水抗 { get => 水属性抗性; set => 水属性抗性 = value; }
//    public int 风抗 { get => 风属性抗性; set => 风属性抗性 = value; }
//    public int 雷抗 { get => 土属性抗性; set => 土属性抗性 = value; }

//    /// <summary>
//    /// 合并两个属性配置
//    /// </summary>
//    public static 属性配置 合并属性(属性配置 基础属性, 属性配置 附加属性)
//    {
//        return new 属性配置
//        {
//            生命值 = 基础属性.生命值 + 附加属性.生命值,
//            魔法值 = 基础属性.魔法值 + 附加属性.魔法值,
//            物理攻击 = 基础属性.物理攻击 + 附加属性.物理攻击,
//            物理防御 = 基础属性.物理防御 + 附加属性.物理防御,
//            火属性攻击 = 基础属性.火属性攻击 + 附加属性.火属性攻击,
//            水属性攻击 = 基础属性.水属性攻击 + 附加属性.水属性攻击,
//            风属性攻击 = 基础属性.风属性攻击 + 附加属性.风属性攻击,
//            土属性攻击 = 基础属性.土属性攻击 + 附加属性.土属性攻击,
//            火属性抗性 = 基础属性.火属性抗性 + 附加属性.火属性抗性,
//            水属性抗性 = 基础属性.水属性抗性 + 附加属性.水属性抗性,
//            风属性抗性 = 基础属性.风属性抗性 + 附加属性.风属性抗性,
//            土属性抗性 = 基础属性.土属性抗性 + 附加属性.土属性抗性,
//            速度 = 基础属性.速度 + 附加属性.速度,
//            幸运值 = 基础属性.幸运值 + 附加属性.幸运值
//        };
//    }
//}


// 副本配置类
public class 副本配置 : 游戏实体
{
    public int 等级要求 { get; set; }
    public int 推荐人数 { get; set; }
    public int 经验奖励 { get; set; }  // 添加经验奖励属性
    public List<怪物生成配置> 怪物生成配置列表 { get; set; } = [];
    public List<掉落物品> 通关奖励 { get; set; } = [];
    
    // 添加事件节点列表属性
    public List<事件节点> 事件节点列表 { get; set; } = [];
}

// 怪物生成配置
public class 怪物生成配置
{
    public Guid 怪物ID { get; set; } = Guid.CreateVersion7();
    public int 数量 { get; set; }
    public int 生成位置 { get; set; } // 0-前排队友，1-后排敌人等
    public 怪物? 怪物详情 { get; set; }
}

// 事件节点类
public class 事件节点
{
    public Guid Id { get; set; } = Guid.CreateVersion7();
    public Guid 副本配置Id { get; set; } = Guid.Empty;
    public string 名称 { get; set; } = "";
    public string 描述 { get; set; } = "";
    public int 顺序 { get; set; } = 0;
    public string 类型 { get; set; } = "战斗";
    public List<怪物生成配置> 怪物生成列表 { get; set; } = [];
    public List<掉落物品> 掉落物品列表 { get; set; } = [];
    // 新增：剧情内容字段
    public string 剧情内容 { get; set; } = "";
}